ডেটা ক্যাশিং হলো এমন একটি কৌশল, যার মাধ্যমে সিস্টেম বা অ্যাপ্লিকেশন ডেটাকে অস্থায়ীভাবে সংরক্ষণ করে, যাতে পরবর্তীতে একই ডেটা পুনরায় পাওয়ার সময় দ্রুত অ্যাক্সেস করা যায়। ক্যাশিং প্রক্রিয়া সিস্টেমের পারফরম্যান্স বৃদ্ধি করতে সাহায্য করে, বিশেষ করে যখন ওয়েব অ্যাপ্লিকেশন বা সার্ভার বার বার একই ডেটা অ্যাক্সেস করছে। এর মাধ্যমে ডেটাবেসের লোড কমানো যায় এবং দ্রুত রেসপন্স প্রদান করা সম্ভব হয়।
এখানে Efficient Data Caching Techniques এবং তাদের উদাহরণ দেওয়া হলো:
Client-Side Caching হল এমন একটি ক্যাশিং পদ্ধতি যেখানে ডেটা ব্যবহারকারীর ব্রাউজারে সংরক্ষণ করা হয়। এটি ডেটা পুনরায় লোড করার সময় সার্ভার থেকে ডেটা ফেচ করার পরিবর্তে ব্রাউজার থেকেই ডেটা সরবরাহ করে, ফলে সার্ভারের লোড কমে এবং দ্রুত রেসপন্স পাওয়া যায়।
LocalStorage ওয়েব ব্রাউজারে একটি ডেটাবেসের মতো কাজ করে, যেখানে JSON ডেটা বা অন্য কোনো ডেটা সঞ্চয় করা যায়।
function fetchData() {
if (localStorage.getItem("userData")) {
// ক্যাশড ডেটা ব্যবহার
const userData = JSON.parse(localStorage.getItem("userData"));
console.log("Using cached data:", userData);
} else {
// সার্ভার থেকে ডেটা ফেচ
const xhr = new XMLHttpRequest();
xhr.open("GET", "https://jsonplaceholder.typicode.com/users", true);
xhr.onload = function () {
if (xhr.status === 200) {
const responseData = JSON.parse(xhr.responseText);
// সার্ভার থেকে পাওয়া ডেটা ক্যাশে সংরক্ষণ
localStorage.setItem("userData", JSON.stringify(responseData));
console.log("Fetched data from server:", responseData);
}
};
xhr.send();
}
}
fetchData();
ব্যাখ্যা:
Server-Side Caching হল এমন একটি পদ্ধতি যেখানে সার্ভার নিজেই ডেটা ক্যাশ করে রাখে, যাতে ডেটাবেসের রিকোয়েস্ট কমিয়ে আসে এবং সার্ভার দ্রুত রেসপন্স প্রদান করতে পারে।
Memcached একটি ইন-মেমরি ক্যাশিং সিস্টেম, যা দ্রুত ডেটা অ্যাক্সেসের জন্য ব্যবহৃত হয়।
<?php
// Memcached সিস্টেম শুরু করা
$memcached = new Memcached();
$memcached->addServer('localhost', 11211);
// ক্যাশ চেক করা
$data = $memcached->get('user_data');
if ($data === false) {
// ডেটা যদি ক্যাশে না থাকে, তখন ডেটাবেস থেকে ডেটা ফেচ করা হবে
$data = "Data from database";
// ডেটা ক্যাশে সংরক্ষণ করা
$memcached->set('user_data', $data, 3600); // ক্যাশে 1 ঘণ্টা সঞ্চয়
echo "Fetched from database: " . $data;
} else {
echo "Fetched from cache: " . $data;
}
?>
ব্যাখ্যা:
Cache-Control Headers হল HTTP হেডারস যা ক্লায়েন্ট এবং সার্ভারকে ক্যাশিং নীতি নির্দেশ করতে সাহায্য করে। এটি বিশেষভাবে API রেসপন্সে ব্যবহার হয়, যেখানে ডেটার লাইফটাইম বা ক্যাশিং পলিসি নির্ধারণ করা হয়।
<?php
// ক্যাশিং পলিসি সেট করা
header("Cache-Control: public, max-age=3600"); // ক্যাশ 1 ঘণ্টা জন্য
echo "This content will be cached for 1 hour.";
?>
ব্যাখ্যা:
Database Query Caching হল একটি পদ্ধতি যেখানে ডেটাবেসের সাধারণ রিকোয়েস্টগুলোর জন্য ক্যাশ তৈরি করা হয়, যাতে একই রিকোয়েস্ট বার বার ডেটাবেসে না যেতে হয়। এর মাধ্যমে ডেটাবেসের পারফরম্যান্স উল্লেখযোগ্যভাবে বৃদ্ধি পায়।
MySQL এর মধ্যে ক্যাশিং সক্ষম করার জন্য QUERY_CACHE
ব্যবহার করা হয়:
SET GLOBAL query_cache_size = 1048576; -- ক্যাশ সাইজ 1MB সেট করা
SET GLOBAL query_cache_type = 1; -- ক্যাশিং সক্ষম করা
SELECT * FROM users WHERE user_id = 1; -- প্রথম রিকোয়েস্ট ক্যাশে সংরক্ষণ হবে
-- পরবর্তী সময়ে একই রিকোয়েস্টে ডেটা ক্যাশ থেকে সরবরাহ করা হবে
SELECT * FROM users WHERE user_id = 1;
ব্যাখ্যা:
CDN Caching হল এমন একটি পদ্ধতি, যেখানে ওয়েবসাইটের স্ট্যাটিক কনটেন্ট (যেমন ছবি, CSS, JavaScript) বিভিন্ন সার্ভারে ক্যাশ করা হয়, যাতে ব্যবহারকারী যে সার্ভারের কাছে রয়েছে তার কাছ থেকে দ্রুত কনটেন্ট পাওয়া যায়।
আপনি যখন একটি CDN পরিষেবা ব্যবহার করেন, যেমন Cloudflare, Amazon CloudFront, তখন আপনার ওয়েবসাইটের স্ট্যাটিক ফাইলগুলি বিশ্বব্যাপী বিভিন্ন ডেটা সেন্টারে ক্যাশ হয়ে থাকবে।
CDN URL উদাহরণ:
<img src="https://cdn.example.com/images/profile.jpg" alt="Profile Picture">
ব্যাখ্যা:
ডেটা ক্যাশিং সিস্টেমের পারফরম্যান্স উন্নত করতে এবং ওয়েব অ্যাপ্লিকেশনের লোড কমাতে গুরুত্বপূর্ণ ভূমিকা পালন করে। বিভিন্ন ক্যাশিং কৌশল যেমন client-side caching, server-side caching, database query caching, এবং CDN caching ওয়েব অ্যাপ্লিকেশনগুলোতে দ্রুত ডেটা অ্যাক্সেস এবং স্কেলেবিলিটি নিশ্চিত করতে সহায়ক। সঠিক ক্যাশিং কৌশল নির্বাচন করলে আপনার ওয়েব অ্যাপ্লিকেশনটি আরও দ্রুত এবং সাশ্রয়ী হতে পারে।